import 'package:file_picker/file_picker.dart';
import 'package:flutter/services.dart';

import 'picked_directory.dart';

/// 非 Web 平台下的目录选择实现。
///
/// - 基于 [file_picker](https://pub.dev/packages/file_picker) 的
///   [FilePicker.getDirectoryPath] 方法；
/// - 返回 [PickedDirectory]，仅包含用户选择的路径；
/// - 如果用户取消或平台不支持，则返回 `null`。
Future<PickedDirectory?> pickDirectoryImpl() async {
  try {
    // 打开系统目录选择器
    final dir = await FilePicker.platform.getDirectoryPath(
      dialogTitle: '选择项目位置',
    );

    // 用户取消 / 空路径
    if (dir == null || dir.isEmpty) return null;

    // 转换为统一的数据结构
    return PickedDirectory(displayPath: dir);
  } on UnimplementedError {
    // 某些平台未实现 getDirectoryPath()
    return null;
  } on PlatformException {
    // 调用原生层失败
    return null;
  } catch (_) {
    // 其他异常：安全兜底
    return null;
  }
}
